package com.lonely.fx;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.input.*;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

import java.util.HashMap;
import java.util.Map;

/**
 * @date: 2022-07-28 11:11
 * @author: ztkj-hzb
 * @description: 剪切板的基础属性使用说明
 **/
public class ClipboardBaseSettingMain extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    /**
     * 项目启动后，想要使用剪切板，直接快捷键 Ctrl+V
     */
    @Override
    public void start(Stage primaryStage) throws Exception {

        HBox hBox = new HBox();
        Label label = new Label();
        hBox.getChildren().addAll(label);
        primaryStage.setScene(new Scene(hBox));
        primaryStage.setWidth(300);
        primaryStage.setHeight(300);
        primaryStage.show();


        //获取系统剪切板
        Clipboard systemClipboard = Clipboard.getSystemClipboard();

        //创建剪切板内容对象
        Map<DataFormat, Object> clipboardContent = new HashMap<>();

        //向剪切板中设置文本内容
        //TODO 相同类型格式的数据，再简洁版中会被后面的覆盖
        clipboardContent.put(DataFormat.PLAIN_TEXT, "Hello World");
        clipboardContent.put(DataFormat.PLAIN_TEXT, "风中追风");
        //向剪切板中设置图片
        clipboardContent.put(DataFormat.IMAGE, new Image("icons/mla.png"));

        //设置剪切板内容
        systemClipboard.setContent(clipboardContent);


        //绑定快捷键
        KeyCodeCombination keyCodeCombination = new KeyCodeCombination(KeyCode.V, KeyCombination.CONTROL_DOWN);
        primaryStage.getScene().getAccelerators().put(keyCodeCombination, new Runnable() {
            @Override
            public void run() {
                //获取剪切板内容

                //TODO 注意，图片这种类型，除非是自己再剪切板中put的时候，key为Image，否则，复制本地图片到剪切板，这里获取的都属于文件
                System.out.println("剪切板中是否存在文本：" + systemClipboard.hasString());
                System.out.println("剪切板中是否存在文件：" + systemClipboard.hasFiles());
                System.out.println("剪切板中是否存在html：" + systemClipboard.hasHtml());
                System.out.println("剪切板中是否存在Image：" + systemClipboard.hasImage());
                System.out.println("剪切板中是否存在Rtf：" + systemClipboard.hasRtf());
                System.out.println("剪切板中是否存在URL：" + systemClipboard.hasUrl());

                //获取剪切板中直接格式对应的数据
                systemClipboard.getContent(DataFormat.PLAIN_TEXT);

                if (systemClipboard.hasString()) {
                    System.out.println("剪切板中的文本内容：" + systemClipboard.getString());
                }

                if (systemClipboard.hasImage()) {
                    System.out.println("剪切板中的图片宽度：" + systemClipboard.getImage().getWidth());
                }

            }
        });


    }
}
